#include <iostream>
using namespace std;

const int N = 100;
double D[N]; // 存储距离d
double A[N]; // 存储最短路径(从an到aj的正向距离)
int n;

void preprocess()
{
    double sum = 0;
    for (int i = 0; i < N; ++i)
    {
        sum += D[i];
        A[i] = sum;
    }
}

double Distance(int i, int j)
{
    // i : 1 ~ N, j : 1 ~ N
    if (i < 1 || j < 1 || i > N || j > N)
        return -1;
    if (i == j)
        return 0;
    if (i > j)
        std::swap(i, j);
    return min(A[j - 1] - A[i - 1], A[N - 1] - (A[j - 1] - A[i - 1])); // 取正走或反走中小的那个
}

int main()
{
    cout << "请输入环形公路上的站点数n：";
    cin >> n;
    cout << "请输入每两站之间的距离d：\n";
    // an距离a1为d0=1，ai距离ai+1为di
    for (int i = 1; i < n; i++)
    {
        cin >> D[i];
    }
    D[0] = 1;
    preprocess();

    cout << "查询两个站点i、j间的距离：";
    int i, j;
    cin >> i >> j;
    cout << "a" << i << "和a" << j << "间最短距离为：" << Distance(i, j) << endl;

    return 0;
}

/*
请输入环形公路上的站点数n：6
请输入每两站之间的距离d：
2 3 1 3 5
查询两个站点i、j间的距离：2 5
a2和a5间最短距离为：7
*/